package com.united.ucts.modules.system.service;

import com.united.frame.common.module.service.IBaseService;
import com.united.ucts.modules.system.pojo.po.Resource;

import java.util.List;
import java.util.Map;

/**
 * 后台资源管理业务逻辑接口定义类
 *
 * @author Hudan
 * @version 1.0
 * @filename ResourceService.java
 * @copyright <a href="www.united.cn">www.united.cn</a>
 * @date 2019-11-23
 */
public interface ResourceService extends IBaseService<Resource> {

    /**
     * 添加资源
     *
     * @param resource 需要添加的资源信息
     * @return 添加结果
     */
    Boolean create(Resource resource);

    /**
     * 删除资源
     *
     * @param id 需要删除的资源ID
     * @return 删除结果
     */
    Boolean delete(String id);

    /**
     * 修改资源
     *
     * @param id       需要修改的资源ID
     * @param resource 需要修改的资源信息
     * @return 修改结果
     */
    Boolean update(String id, Resource resource);

    /**
     * 获取资源详情
     *
     * @param id 资源ID
     * @return 资源详情
     */
    Resource detail(String id);

    /**
     * 分页查询资源
     *
     * @param pageNum     当前页数
     * @param pageSize    每页大小
     * @param categoryId  资源分类类型
     * @param nameKeyword 资源名称关键词
     * @param urlKeyword  资源url关键词
     * @return 分页结果
     */
    List<Resource> pageBy(Integer pageNum, Integer pageSize, String categoryId, String nameKeyword, String urlKeyword);

    /**
     * 查询全部有效资源
     *
     * @return 所有有效资源
     */
    List<Resource> listAll();

    /**
     * 初始化资源角色规则
     *
     * @return 初始化后的角色-资源映射关系
     */
    Map<String, List<String>> initResourceRolesMap();
}